Add NativeGameLink for Steam - #244
Conversation
|
Testing Environment
Solid and innovative plugin that greatly enhances non-Steam library management. Everything works as intended! |
|
closing this PR due to complied executables with no source code provided as this may be malicious |
|
@SenpaiXD13 For your own sake, I've manually reverse-engineered the binaries in this PR as you've ran them and could be at risk. Everything has been confirmed safe, you are not infected. As for @senkumil, our point still stands - we can't have compiled binaries in the source tree. You may be able to JIT compile C# code in powershell on the fly, without needing any binaries, ex: Add-Type -TypeDefinition @"
public class Foo {
public static int Add(int a, int b) => a + b;
}
"@
[Foo]::Add(2, 3)This Powershell interop syntax supports the entirety of C#, not just a subset. |
NativeGameLink for Steam
NativeGameLink for Steam is a Millennium plugin that transforms non-Steam shortcuts into native-style Steam Library experiences by linking them to their corresponding Steam AppIDs.
The original non-Steam executable and launch behavior remain intact. NativeGameLink uses the linked Steam AppID to reconstruct applicable Steam Library surfaces locally, providing a significantly richer experience for external games without converting them into owned Steam licenses.
Repository: https://github.com/senkumil/NativeGameLink-for-Steam
Current version: 3.0.0
Main Features
NativeGameLink does not grant ownership of Steam games, licenses, DLC, inventory items, trading cards, badges, XP, or Steam Cloud storage.
Linking a non-Steam shortcut does not unlock official Steam achievements. Native Steam achievement-state management is a separate, explicitly invoked optional feature.
Task Checklist
Developer
Plugin Functionality
Backend Configuration
No: I do not use a standard Millennium Python backend.
NativeGameLink uses Millennium's Lua backend:
backendType: "lua"Yes: NativeGameLink includes custom binaries that are not implemented directly through Millennium's backend runtime.
The plugin includes two optional Windows C# helper executables:
backend/bin/steam_achievement_sync.exebackend/bin/steam_card_farmer.exeThe complete corresponding C# source code is included in the repository:
backend/src/steam_achievement_sync.csbackend/src/steam_card_farmer.csAchievement helper
steam_achievement_sync.execommunicates with the locally installed Steam client.It can perform explicitly requested operations for native Steam games, including:
This functionality is optional and separate from NativeGameLink's non-Steam achievement presentation.
No native Steam achievement is modified merely by linking or opening a non-Steam shortcut.
AppID idling helper
steam_card_farmer.execommunicates with the locally installed Steam client and maintains an active local Steam session for a selected AppID until explicitly stopped by the user.It is used by the optional AppID idling functionality.
The helper does not directly grant:
Eligibility and item drops remain controlled by Steam.
Both helper executables operate locally and their complete source code is included in the repository for review.
External Services
NativeGameLink does not operate or depend on a proprietary remote backend service.
SteamGridDB integration is optional.
Users who choose to enable SteamGridDB fallback provide their own API key. The integration is used only to retrieve artwork when an appropriate official Steam asset is unavailable.
Platform
This submission has been tested on:
The two optional C# helper executables are currently Windows-specific.
Big Picture functionality has been tested through the Steam client.
Testing Instructions
1. Installation
2. Add a non-Steam game
3. Link the shortcut to a Steam AppID
4. Library integration
After linking a compatible non-Steam game, verify the applicable Steam-style surfaces.
Depending on the information exposed by Steam for the selected AppID, NativeGameLink can display:
Not every Steam AppID exposes every surface, so availability can vary between games.
5. Artwork
SteamGridDB fallback can optionally be tested by providing the tester's own SteamGridDB API key.
6. Non-Steam achievement presentation
7. Playtime
8. Persistence
9. Big Picture
10. Native Steam achievement-state management
Implementation source:
backend/src/steam_achievement_sync.cs11. AppID idling
Implementation source:
backend/src/steam_card_farmer.csScreenshots
1. Before linking — original non-Steam shortcut
2. After linking — NativeGameLink Library integration
3. Achievements / activity / game information
4. Artwork customization / Properties integration
5. Big Picture integration
6. AppID linking / automatic detection
Steam Client Testing
The plugin author has tested NativeGameLink for Steam on:
Testing included the primary non-Steam linking workflow, Library integration, persistence, artwork, and Big Picture functionality.
Community Contribution
#218 (comment)
#204 (comment)
Third-party Verification
Additional Notes
NativeGameLink is designed primarily to enhance the Steam Library experience of non-Steam shortcuts while preserving their original executable and launch configuration.
The plugin intentionally separates non-Steam presentation features from the optional functionality that operates on native Steam games.
All custom helper source code required for reviewing the included C# executables is available directly in the repository.